from urllib.error import URLError
from urllib.request import ProxyHandler, build_opener
# 1.使用代理池
# 2.使用代理vpn, 可以将本机 IP 切换到代理软件连接的服务器

#  urllib 的代理的设置
proxy = '127.0.0.1:7890'  # 7890是vpn代理的端口
proxy_handler = ProxyHandler({
    'http': 'http://' + proxy,
    'https': 'https://' + proxy
})
opener = build_opener(proxy_handler)
try:
    response = opener.open('http://httpbin.org/get')
    print(response.read().decode('utf-8'))
except URLError as e:
    print(e.reason)


#  requests 的代理的设置
import requests

proxy = '127.0.0.1:7890'
proxies = {
    'http': 'http://' + proxy,
    'https': 'https://' + proxy,
}
try:
    response = requests.get('http://httpbin.org/get', proxies=proxies)
    print(response.text)
except requests.exceptions.ConnectionError as e:
    print('Error', e.args)

# Selenium 同样也可以设置代理，包括两种方式：一种是有界面浏览器
from selenium import webdriver
import time

proxy = '127.0.0.1:7890'  # 设置代理地址
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=http://' + proxy)  # 设置代理服务器
# 使用 chrome_options 作为参数
browser = webdriver.Chrome(options=chrome_options)
# 访问网页，查看是否成功使用代理
browser.get('http://httpbin.org/get')
# 等待页面加载
time.sleep(2)
# 获取并打印页面源代码
page_source = browser.page_source
print(page_source)
# 或者如果返回的是 JSON 数据，可以通过解析来获取
# 你可以在此解析 JSON 格式的数据
# browser.quit()

